In voice and image processing, there has been widely employed a discrete Fourier transform (DFT) and its variations such as a discrete cosine transform and a discrete Hartley transform. In these transform processes, a plurality of trigonometric functions are utilized to primarily calculate sums of products between the trigonometric functions and data items. In general, the calculation cost of multiplication is higher than that of addition and subtraction. Consequently, there have been devised several high-speed calculation algorithms in which the number of multiplications are advantageously reduced using relationships between trigonometric functions, e.g., the formula of double angle and the formula of half-angle. These algorithms have been briefly described in pages 115 to 142 of the "Nikkei Electronics" No. 511 published on October 15, 1990. In practice, the trigonometric functions are stored as constants in a memory. Particularly, due to the relatively small number of figures of the values, there has been also adopted a method in which the results of products between data items and trigonometric functions are stored in a memory. In addition, it is possible to utilize a known method in which each trigonometric function value is calculated in a CORDIC method using the principle of rotation of coordinates and/or a formula of approximate expression of function.
In image processing, the Hough transform is often employed because the transform is advantageously applicable even when the data contains noises due to the detection of straight lines in the image. When the coordinates of an arbitrary pixel are expressed as (x,y), the Hough transform is defined as EQU R=x cos .theta.+y sin .theta.=x cos .theta.+y cos(.pi./2-.theta.).
FIG. 23 shows the geometric relationship of the transform. R stands for the length of a perpendicular drawn from the origin of the coordinate system to a straight line passing the pixel (x,y). Letter .theta. denotes the angle between the perpendicular and the positive direction of the x axis. In an actual application, for an arbitrary pixel, the angle .theta. takes a plurality of discrete values ranging from 0 to .pi. such that R of expression (1) is calculated for each value of .theta.. R is also discretized and its frequency of occurrence is attained in the form of voting for all pixels so that (R, .theta.) having the highest number of votes obtained is detected as a straight line component.
A plurality of trigonometric functions are stored as constants in a memory for use in calculation later. Or, in the conventional method in which the value of each trigonometric function is directly calculated using, e.g., the CORDIC method, even when the number of multiplications is reduced by a clever algorithm, a considerable amount of multiplications are still necessary. Furthermore, it is not practical to provide a multiplier for each of the multiplications, namely, the multiplier is to be sequentially used. This is cause of hindrance to the high-speed operation. Additionally, since an arbitrary input is assumed in a multiplier, even when a value at a digit place of binary input data is zero, a partial product is uselessly calculated for the digit place. When there is used the method in which all of the results of products between data items and trigonometric function values are stored in the memory, although the arithmetic unit can be easily designed, the memory capacity is increased and hence the chip size becomes larger.
Moreover, to count the votes for the discrete (R, .theta.), there is required a large volume of memory.